<!DOCTYPE html>
<html lang="zh_CN">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <meta name="generator" content="VuePress 2.0.0-beta.45">
    <style>
      :root {
        --c-bg: #fff;
      }
      html.dark {
        --c-bg: #22272e;
      }
      html, body {
        background-color: var(--c-bg);
      }
    </style>
    <script>
      const userMode = localStorage.getItem('vuepress-color-scheme');
			const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
			if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
				document.documentElement.classList.toggle('dark', true);
			}
    </script>
    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico"><title>迁移到 Dep | 科科人神</title><meta name="description" content="科科人神，后端软件工程师，喜欢云原生">
    <link rel="modulepreload" href="/assets/app.80e5dc69.js"><link rel="modulepreload" href="/assets/migrating.html.92825adc.js"><link rel="modulepreload" href="/assets/migrating.html.128871c1.js"><link rel="prefetch" href="/assets/index.html.cba988ab.js"><link rel="prefetch" href="/assets/1.html.8ac90e92.js"><link rel="prefetch" href="/assets/19.html.4444be95.js"><link rel="prefetch" href="/assets/必备知识.html.7da85c42.js"><link rel="prefetch" href="/assets/必备知识罗列.html.5e18db77.js"><link rel="prefetch" href="/assets/1.html.356f0755.js"><link rel="prefetch" href="/assets/2.html.085440fc.js"><link rel="prefetch" href="/assets/3.html.09effb5c.js"><link rel="prefetch" href="/assets/1.html.50fb5135.js"><link rel="prefetch" href="/assets/1.html.17222973.js"><link rel="prefetch" href="/assets/1.html.0a197ef1.js"><link rel="prefetch" href="/assets/4-1.html.073fbd99.js"><link rel="prefetch" href="/assets/4-2.html.64039343.js"><link rel="prefetch" href="/assets/4.html.021c0881.js"><link rel="prefetch" href="/assets/5-6-1.html.34978ed1.js"><link rel="prefetch" href="/assets/5-6-2.html.f004f560.js"><link rel="prefetch" href="/assets/5-6.html.f5ad3835.js"><link rel="prefetch" href="/assets/index.html.467e6eba.js"><link rel="prefetch" href="/assets/index.html.f3622043.js"><link rel="prefetch" href="/assets/index.html.a2792a89.js"><link rel="prefetch" href="/assets/index.html.5d63961d.js"><link rel="prefetch" href="/assets/index.html.0b5fc023.js"><link rel="prefetch" href="/assets/index.html.2f735cf1.js"><link rel="prefetch" href="/assets/index.html.9d71a6d6.js"><link rel="prefetch" href="/assets/bash_completions.html.ed68147e.js"><link rel="prefetch" href="/assets/man_docs.html.2f0dd0c9.js"><link rel="prefetch" href="/assets/md_docs.html.20de452a.js"><link rel="prefetch" href="/assets/rest_docs.html.b77e8a2e.js"><link rel="prefetch" href="/assets/zsh_completions.html.60976ab2.js"><link rel="prefetch" href="/assets/syslog.html.48554683.js"><link rel="prefetch" href="/assets/daily_dep.html.2f155f5c.js"><link rel="prefetch" href="/assets/getting_started.html.769a2eaa.js"><link rel="prefetch" href="/assets/installation.html.e6b0002b.js"><link rel="prefetch" href="/assets/new_project.html.8326d390.js"><link rel="prefetch" href="/assets/uninstalling.html.26650652.js"><link rel="prefetch" href="/assets/deduction.html.d4acd3fa.js"><link rel="prefetch" href="/assets/ensure_mechanics.html.603c62de.js"><link rel="prefetch" href="/assets/404.html.a15b4cbd.js"><link rel="prefetch" href="/assets/index.html.29aac47c.js"><link rel="prefetch" href="/assets/index.html.b64fbb23.js"><link rel="prefetch" href="/assets/index.html.cd48e230.js"><link rel="prefetch" href="/assets/index.html.6b048e76.js"><link rel="prefetch" href="/assets/index.html.7f0a6e54.js"><link rel="prefetch" href="/assets/index.html.b5a71586.js"><link rel="prefetch" href="/assets/index.html.60805430.js"><link rel="prefetch" href="/assets/index.html.60736b0b.js"><link rel="prefetch" href="/assets/index.html.80dddd6d.js"><link rel="prefetch" href="/assets/index.html.cc3c6a0d.js"><link rel="prefetch" href="/assets/index.html.44e62fda.js"><link rel="prefetch" href="/assets/index.html.015a0b2c.js"><link rel="prefetch" href="/assets/index.html.415d4517.js"><link rel="prefetch" href="/assets/index.html.d1d65e23.js"><link rel="prefetch" href="/assets/index.html.725ac526.js"><link rel="prefetch" href="/assets/index.html.c824ee30.js"><link rel="prefetch" href="/assets/1.html.4fb25663.js"><link rel="prefetch" href="/assets/19.html.ded8a9c9.js"><link rel="prefetch" href="/assets/必备知识.html.0ff3a77d.js"><link rel="prefetch" href="/assets/必备知识罗列.html.85e0f635.js"><link rel="prefetch" href="/assets/1.html.4f76037b.js"><link rel="prefetch" href="/assets/2.html.05a6e91e.js"><link rel="prefetch" href="/assets/3.html.30d4c4b6.js"><link rel="prefetch" href="/assets/1.html.ce86a757.js"><link rel="prefetch" href="/assets/1.html.0f8a9434.js"><link rel="prefetch" href="/assets/1.html.f4ee2fe7.js"><link rel="prefetch" href="/assets/4-1.html.c7cc75b6.js"><link rel="prefetch" href="/assets/4-2.html.36807608.js"><link rel="prefetch" href="/assets/4.html.c03ae622.js"><link rel="prefetch" href="/assets/5-6-1.html.651e5517.js"><link rel="prefetch" href="/assets/5-6-2.html.5ccfdb5e.js"><link rel="prefetch" href="/assets/5-6.html.882bc951.js"><link rel="prefetch" href="/assets/index.html.9d9ba895.js"><link rel="prefetch" href="/assets/index.html.3da373d1.js"><link rel="prefetch" href="/assets/index.html.6ec0b380.js"><link rel="prefetch" href="/assets/index.html.f8c39be7.js"><link rel="prefetch" href="/assets/index.html.e8d4dc57.js"><link rel="prefetch" href="/assets/index.html.2275c56f.js"><link rel="prefetch" href="/assets/index.html.711c721b.js"><link rel="prefetch" href="/assets/bash_completions.html.31fa6426.js"><link rel="prefetch" href="/assets/man_docs.html.cc0f68c6.js"><link rel="prefetch" href="/assets/md_docs.html.dd10674f.js"><link rel="prefetch" href="/assets/rest_docs.html.46da86e5.js"><link rel="prefetch" href="/assets/zsh_completions.html.64d57b81.js"><link rel="prefetch" href="/assets/syslog.html.5324d692.js"><link rel="prefetch" href="/assets/daily_dep.html.b7a8b70b.js"><link rel="prefetch" href="/assets/getting_started.html.29c6534a.js"><link rel="prefetch" href="/assets/installation.html.b11da95a.js"><link rel="prefetch" href="/assets/new_project.html.8fcfe511.js"><link rel="prefetch" href="/assets/uninstalling.html.34c1a6fb.js"><link rel="prefetch" href="/assets/deduction.html.2f0a618b.js"><link rel="prefetch" href="/assets/ensure_mechanics.html.7818d8b5.js"><link rel="prefetch" href="/assets/404.html.37719150.js"><link rel="prefetch" href="/assets/index.html.bc2fbcdd.js"><link rel="prefetch" href="/assets/index.html.2363e42b.js"><link rel="prefetch" href="/assets/index.html.691f6b43.js"><link rel="prefetch" href="/assets/index.html.c73599f4.js"><link rel="prefetch" href="/assets/index.html.32559aa6.js"><link rel="prefetch" href="/assets/index.html.283a60cc.js"><link rel="prefetch" href="/assets/index.html.b72bddc9.js"><link rel="prefetch" href="/assets/index.html.aebed871.js"><link rel="prefetch" href="/assets/index.html.1bace120.js"><link rel="prefetch" href="/assets/index.html.7913d44a.js"><link rel="prefetch" href="/assets/index.html.4e5360d4.js"><link rel="prefetch" href="/assets/index.html.028748b8.js"><link rel="prefetch" href="/assets/index.html.e9cb3a86.js"><link rel="prefetch" href="/assets/index.html.e31e8159.js"><link rel="prefetch" href="/assets/index.html.01049197.js"><link rel="prefetch" href="/assets/404.30cc8863.js"><link rel="prefetch" href="/assets/HomePage.4e823a0b.js"><link rel="prefetch" href="/assets/Layout.61f5e0fd.js"><link rel="prefetch" href="/assets/Links.8680cda6.js"><link rel="prefetch" href="/assets/Post.93b09438.js"><link rel="prefetch" href="/assets/Tags.3d9bb337.js">
    <link rel="stylesheet" href="/assets/style.8b24233a.css">
  </head>
  <body>
    <div id="app"><!--[--><div class="theme-container"><!--[--><header class="navbar is-fixed is-visible invert"><span><a href="/" class=""><span class="site-name">$ cd /home/</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/" class="" aria-label="home"><!--[--><!--]--><span class="nav-icon"><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="0 0 20 20" fill="currentColor"><path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z"/></svg></span><span>home</span><!--[--><!--]--></a></div><div class="navbar-item"><a href="/tags/" class="" aria-label="归档"><!--[--><!--]--><span class="nav-icon"><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="-1.6 -1.6 19.2 19.2" fill="currentColor"><path d="M2 2a1 1 0 011-1h4.586a1 1 0 01.707.293l7 7a1 1 0 010 1.414l-4.586 4.586a1 1 0 01-1.414 0l-7-7A1 1 0 012 6.586V2zm3.5 4a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"/><path d="M1.293 7.793A1 1 0 011 7.086V2a1 1 0 00-1 1v4.586a1 1 0 00.293.707l7 7a1 1 0 001.414 0l.043-.043-7.457-7.457z"/></svg></span><span>归档</span><!--[--><!--]--></a></div><div class="navbar-item"><a href="/links/" class="" aria-label="作品合集"><!--[--><!--]--><span class="nav-icon"><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="-79.52 -43.52 599.04 599.04" fill="currentColor"><path d="M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z"/></svg></span><span>作品合集</span><!--[--><!--]--></a></div><!--]--><div class="navbar-item"><a style="cursor:pointer;"><span class="nav-icon"><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="0 0 24 24" fill="currentColor"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 2c4.968 0 9 4.032 9 9s-4.032 9-9 9-9-4.032-9-9 4.032-9 9-9zm0 16c3.867 0 7-3.133 7-7 0-3.868-3.133-7-7-7-3.868 0-7 3.132-7 7 0 3.867 3.132 7 7 7zm8.485.071l2.829 2.828-1.415 1.415-2.828-2.829 1.414-1.414z"/></svg></span><span>搜索</span></a></div></nav><!--[--><!--]--><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/" class="" aria-label="home"><!--[--><!--]--><span class="nav-icon"><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="0 0 20 20" fill="currentColor"><path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z"/></svg></span><span>home</span><!--[--><!--]--></a></div><div class="navbar-item"><a href="/tags/" class="" aria-label="归档"><!--[--><!--]--><span class="nav-icon"><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="-1.6 -1.6 19.2 19.2" fill="currentColor"><path d="M2 2a1 1 0 011-1h4.586a1 1 0 01.707.293l7 7a1 1 0 010 1.414l-4.586 4.586a1 1 0 01-1.414 0l-7-7A1 1 0 012 6.586V2zm3.5 4a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"/><path d="M1.293 7.793A1 1 0 011 7.086V2a1 1 0 00-1 1v4.586a1 1 0 00.293.707l7 7a1 1 0 001.414 0l.043-.043-7.457-7.457z"/></svg></span><span>归档</span><!--[--><!--]--></a></div><div class="navbar-item"><a href="/links/" class="" aria-label="作品合集"><!--[--><!--]--><span class="nav-icon"><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="-79.52 -43.52 599.04 599.04" fill="currentColor"><path d="M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z"/></svg></span><span>作品合集</span><!--[--><!--]--></a></div><!--]--><div class="navbar-item"><a style="cursor:pointer;"><span class="nav-icon"><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="0 0 24 24" fill="currentColor"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 2c4.968 0 9 4.032 9 9s-4.032 9-9 9-9-4.032-9-9 4.032-9 9-9zm0 16c3.867 0 7-3.133 7-7 0-3.868-3.133-7-7-7-3.868 0-7 3.132-7 7 0 3.867 3.132 7 7 7zm8.485.071l2.829 2.828-1.415 1.415-2.828-2.829 1.414-1.414z"/></svg></span><span>搜索</span></a></div></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading">迁移到 Dep <!----></p><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/posts/2023/4/docs/Dep/docs/guides/migrating.html#dep-init-力学" class="router-link-active router-link-exact-active sidebar-item" aria-label="dep init 力学"><!--[--><!--]--><!----><span>dep init 力学</span><!--[--><!--]--></a><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/posts/2023/4/docs/Dep/docs/guides/migrating.html#推理阶段" class="router-link-active router-link-exact-active sidebar-item" aria-label="推理阶段"><!--[--><!--]--><!----><span>推理阶段</span><!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/posts/2023/4/docs/Dep/docs/guides/migrating.html#求解阶段" class="router-link-active router-link-exact-active sidebar-item" aria-label="求解阶段"><!--[--><!--]--><!----><span>求解阶段</span><!--[--><!--]--></a><!----></li><!--]--></ul></li><li><a aria-current="page" href="/posts/2023/4/docs/Dep/docs/guides/migrating.html#处理失败" class="router-link-active router-link-exact-active sidebar-item" aria-label="处理失败"><!--[--><!--]--><!----><span>处理失败</span><!--[--><!--]--></a><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/posts/2023/4/docs/Dep/docs/guides/migrating.html#硬故障" class="router-link-active router-link-exact-active sidebar-item" aria-label="硬故障"><!--[--><!--]--><!----><span>硬故障</span><!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/posts/2023/4/docs/Dep/docs/guides/migrating.html#软故障" class="router-link-active router-link-exact-active sidebar-item" aria-label="软故障"><!--[--><!--]--><!----><span>软故障</span><!--[--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul></li><!--]--></ul><!--[--><!--]--></aside><!--]--><div class="page-content"><!--[--><main class="page"><!--[--><div class="article-header" style=""><!----><div class="article-header-content"><!----><h1 class="article-title"></h1><!----><div class="article-icons"><div class="article-icon"><svg class="ov-icon" style="font-size:1.08em;" aria-hidden="true" width="17.28" height="17.28" viewbox="-75.52 -43.52 599.04 599.04" fill="currentColor"><path d="M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"/></svg><span>科科人神</span></div><!----><div class="article-icon"><svg class="ov-icon" style="font-size:1.08em;" aria-hidden="true" width="17.28" height="17.28" viewbox="0 0 24 24" fill="currentColor"><path fill="none" d="M0 0h24v24H0z"/><path d="M17.618 5.968l1.453-1.453 1.414 1.414-1.453 1.453a9 9 0 11-1.414-1.414zM12 20a7 7 0 100-14 7 7 0 000 14zM11 8h2v6h-2V8zM8 1h8v2H8V1z"/></svg><span>11 min</span></div></div></div><!----></div><!--[--><!--]--><!--]--><div class="theme-gungnir-content"><!--[--><!--]--><!--[--><h1 id="迁移到-dep" tabindex="-1"><a class="header-anchor" href="#迁移到-dep" aria-hidden="true">#</a> 迁移到 Dep</h1><p>理想情况下，将现有 GO 项目迁移到 Dep 是很简单的：</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token builtin class-name">cd</span> <span class="token variable">$GOPATH</span>/src/path/to/project/root
$ dep init
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>对许多项目来说，这就会起作用。<code>dep init</code> 将对你的依赖项使用哪些版本进行有意义的猜测，生成合理的 <code>Gopkg.toml</code>，<code>Gopkg.lock</code> 和 <code>vendor/</code>，如果你的测试通过， 并构建成功，那么你可能已经完成了。(如果是的话，祝贺你！那你的下一步应该去 <a href="/posts/2023/4/docs/Dep/docs/guides/daily_dep.html" class="">每日 Dep</a> 看看)</p><p>但一些项目的迁移过程仍会会出现困难。如果你是第一次尝试 dep，这可能会特别令人沮丧，因为你试图同时学习，如何使用 dep，和如何使用 dep 管理项目。 好消息是 <code>dep init</code> 通常就是难度最大的那座山峰; 一旦你跨过它，事情就变得容易多了。</p><p>本指南的目的是提供足够的信息，让你对 <code>dep init</code> 发生的事情进行推理。这样，你至少可以理解你遇到的是什么样的问题，你可以采取什么步骤来解决这些问题。 为此，我们将首先概述一下 <code>dep init</code> 做了啥。</p><blockquote><p>注意：第一次运行 <code>dep init</code> 可能需要相当长的时间，因为 Dep 正在把你所有的依赖项的新克隆创造到一个指定的位置，<code>$GOPATH/pkg/dep/sources/</code>。 这对于 Dep 的正常操作是必要的，并且在很大程度上仅是一次性成本。</p></blockquote><h2 id="dep-init-力学" tabindex="-1"><a class="header-anchor" href="#dep-init-力学" aria-hidden="true">#</a> <code>dep init</code> 力学</h2><p>迁移现有项目时，首要目标是 <code>dep init</code> 尽可能自动化创建一个 <code>Gopkg.toml</code>。这必然是一个启发性的目标，因为 Dep 对于你之前所做的一切可能没有 <code>1:1</code> 的对应关系。 因此，重要的是，期待 <code>dep init</code> 能尽力而为， 进行着自动化迁移。</p><p><code>dep init</code> 行为取决于现有代码库中的内容和传递给它的命令参数。然而，它总是分两个阶段进行:</p><ol><li>*推理阶段:*从各种来源推理规则和提示，说明使用哪些版本的依赖项。</li><li>*求解阶段:*在 Dep 的模型下设计一个可以接受的解决方案，同时尽可能多地结合上面的推理结论。</li></ol><h3 id="推理阶段" tabindex="-1"><a class="header-anchor" href="#推理阶段" aria-hidden="true">#</a> 推理阶段</h3><p><code>dep init</code> 的推理阶段其行为各不相同。默认情况下，<code>dep init</code> 将查看你的代码库中 <a href="https://github.com/golang/dep/tree/master/internal/importers" target="_blank" rel="noopener noreferrer">其他可以理解的 GO 包管理工具</a> 的元数据文件， 以及尝试自动将这些文件中的数据迁移到合适的 dep 概念中。根据工具和 dep 找到的特定值，可以将来自工具的元数据视为:</p><ul><li>一个 <strong>hint</strong>: dep在求解阶段会尽力遵守的信息，但是如果它找不到遵循提示的解决方案，就会丢弃这些信息。</li><li>一个 <strong>rule</strong>: 在求解阶段必须遵守的信息，最终将作为一个 <code>[[constraint]]</code> 出现在 <code>Gopkg.toml</code> 文件。 如果求解阶段不能找到满足规则的解决方案， 那么它会失败，且带有一个消息。</li></ul><p>有三种情况可以导致 Dep 不做任何基于工具的推理:</p><ul><li>你的项目不使用包管理工具</li><li>Dep 还不支持你使用的工具</li><li>通过 <code>dep init -skip-tools</code></li></ul><p>在基于工具的推理完成之后，dep 通常会进入求解阶段。但是，如果用户传递 <code>-gopath</code> 标志，dep 将首先尝试通过检查包含 <code>GOPATH</code> 的当前项目来填充从工具 元数据中提取的推断中的任何漏洞。 只从 <code>GOPATH</code> 收集提示，它们永远不会取代工具元数据的推论。 如果你想完全掌控 <code>GOPATH</code>，请传递两个标志：<code>dep init -skip-tools -gopath</code>。</p><p>一旦 Dep 编译了它的推理集合，它就开始求解。</p><h3 id="求解阶段" tabindex="-1"><a class="header-anchor" href="#求解阶段" aria-hidden="true">#</a> 求解阶段</h3><p>一旦推理阶段完成，已组装的规则和提示集将被传递给其 <a href="/posts/2023/4/docs/Dep/docs/references/the_solver.html" class="">求解器</a>，以计算出一个完整的 <code>depgraph</code>，最终将记录为 <code>Gopkg.lock</code>。 <code>dep ensure</code> 也是相同的求解过程。并且成功完成它，意味着dep已经找到遵守所有推理规则的依赖版本的组合，以及尽可能多的推理提示。如果解决成功，那么辛苦的工作就完成了; 剩下的大部分是写出 <code>Gopkg.toml</code>，<code>Gopkg.lock</code> 和 <code>vendor/</code>。</p><p>求解器返回一个解决方案，该解决方案本身只是 <a href="https://godoc.org/github.com/golang/dep#Lock" target="_blank" rel="noopener noreferrer">Gopkg.lock 中存储的数据</a> 的表示： 整个依赖关系图的可传递完整，可重现的 <a href="https://godoc.org/github.com/golang/dep/gps#Solution" target="_blank" rel="noopener noreferrer">快照</a>。从一个解决方案写出 <code>Gopkg.lock</code>， 只不过是一个复制和编码{<strong>copy-and-encode</strong>}操作，和写 <code>vendor/</code> 时，将指定的解决方案中列出的每一个项目，放到指定的修订中。 这与 <code>dep ensure</code> 的行为完全一样。</p><p><code>Gopkg.toml</code> 有点不同。不能保证为你项目的所有(甚至任何)依赖推理出规则，但我们仍然希望填充 <code>Gopkg.toml</code> 带有些许合理的值。因此，对于未推理规则的任何依赖项， dep 检查解决方案，以查看最终选择了什么版本，并基于此创建约束:</p><ul><li>如果一个分支，像 <code>master</code>，在解决方案中被选中。<code>branch: &quot;master&quot;</code> 将出现在 <code>Gopkg.toml</code>。</li><li>如果选择了符合语义版本的版本，像 <code>v1.2.0</code>，然后将指定为最小版本: <code>version: &quot;v1.2.0&quot;</code>。</li><li>如果只选择原始修订版，则 <code>Gopkg.toml</code> 没有任何内容。 而 Dep 确实约束了 <code>Gopkg.toml</code> 中的 <code>revision: &quot;…&quot;</code>，因为使用它们被认为是反模式， 因此 dep 不会自动创建它们以避免隐含地鼓励它们的使用。</li></ul><h2 id="处理失败" tabindex="-1"><a class="header-anchor" href="#处理失败" aria-hidden="true">#</a> 处理失败</h2><p>首先，确保你 <code>dep init</code> 带 <code>-v</code>。这将提供更多的信息。</p><p><code>dep init</code>，通常来说与 Dep 一样，它既有硬模式又有软故障模式。硬故障导致进程挂起或完全中止，且没有任何东西写入磁盘。 软故障可能包括或不包括警告， 但最终写入 <code>Gopkg.toml</code>，<code>Gopkg.lock</code> 和 <code>vendor/</code> -只是都不是你想要的而已。在我们深入研究这些内容之前，让我们来设置一些上下文。</p><p>虽然 dep 贡献者已经投入了巨大的努力来创建到 dep 的自动迁移路径，但是这些路径仅是尽力而为并且不精确。 从其他工具或 <code>GOPATH</code> 转换为完全保真并不总对的。 dep 是一个自以为是的工具，具有相应的自以为是的模型，并且该模型有时确实与其他工具有根本的不同。有时这些模型不匹配导致硬故障，有时是软的，总是充满不确定性。</p><p>因为这些都是深层次的假设，他们的症状可以是多样的和令人惊讶的。记住这些假设可以帮你节省一些时间。</p><ol><li>Dep 不允许嵌套 <code>vendor/</code> 目录;它在项目的根目录下，将所有依赖项平铺到 <code>vendor/</code> 目录的最顶层。这是 Dep 模型的基础，不能被禁用。</li><li>Dep 整体控制 <code>vendor</code>，并将吹掉任何与上游源 dep 选择版本不同的手动更改或添加。</li><li>Dep 要求来自给定项目/仓库的所有包都在同一版本。</li><li>Dep 通常不关心 <code>GOPATH</code> 上的内容; 它只处理源自远程网络位置的项目。(提示推理是唯一的例外;一旦解决阶段开始，<code>GOPATH</code> ——以及你对代码所做的任何自定义更改——将被忽略。)</li><li>Dep 通常倾向于语义版本标记的发布到分支(当没有给出任何附加规则)时。这是从 <code>go get</code> 还有其他一些工具的&quot;默认分支&quot;模型的重大转变。它可以导致 Dep 做出惊吓的选择， 只因无法推理一个规则的依赖。</li><li>Dep 假定所有生成的代码都存在，并且已经提交给源。</li></ol><p>迄今为止，很少有项目能够找到一种合理的方法来适应这些要求。 如果你不能想出如何使你的项目适合，请提交一个问题-虽然 dep 必然不能适应每一个现有的方法，它的目标是定义规则， 所有的 Go 项目可以合理地适应。</p><h3 id="硬故障" tabindex="-1"><a class="header-anchor" href="#硬故障" aria-hidden="true">#</a> 硬故障</h3><p>所有的硬故障模式在参考文献中被广泛地覆盖。<a href="/posts/2023/4/docs/Dep/docs/references/failure_modes.html" class="">失效模式</a>。</p><p>因为求解器及其所有可能的故障都是相同的。<code>dep init</code> 以及 <code>dep ensure</code> 有一个单独的部分来理解和处理它们: <a href="/posts/2023/4/docs/Dep/docs/references/failure-modes.html#solving-failures" class="">解决故障处理</a>。<code>dep init</code> 这可能更棘手，然而，其实许多补救措施需要调整 <code>Gopkg.toml</code>。</p><p>不幸的是，当 <code>dep init</code> 失败时，它不会写出部分 <code>Gopkg.toml</code>。这是一个已知的、关键的问题， <a href="https://github.com/golang/dep/issues/909" target="_blank" rel="noopener noreferrer">我们有一个开放的问题(需要帮助!)</a>。</p><p>同时，如果你遇到的特定错误确实需要 <code>Gopkg.toml</code> 调整一下，不幸的是，你需要手动完成 <code>dep init</code> 操作: 创建一个空 <a href="/posts/2023/4/docs/Dep/docs/guides/Gopkg.toml.html" class=""><code>Gopkg.toml</code></a>， 并用手工填充规则。在重排之前，确保你已经 <code>dep init</code> 具有推理参数的各种组合(<code>-skip-tools</code> 和 <code>-gopath</code>)， 看看他们能不能给你点东西。</p><h3 id="软故障" tabindex="-1"><a class="header-anchor" href="#软故障" aria-hidden="true">#</a> 软故障</h3><p>软故障就是 <code>dep init</code> 似乎干净地退出的这种情况，但随后 <code>go build</code> 或 <code>go test</code> 失败。Dep 的软故障通常比细微错误大得多，例如，当你尝试构建时，类型错误发生爆炸， 因为选择了一些依赖的错误版本。</p><p>如果你遇到这样的问题，<code>dep status</code> 是你的第一个诊断步骤;它将报告为你的所有依赖项选择了哪些版本。很显然，依赖关系仅仅是从 build 或 test 错误消息中产生的问题。 如果没有，比较 <code>dep status</code> 列出与前一个工具记录的版本，找出差异。</p><p>一旦确定了有问题的依赖关系，下一步就是对它们， 在 <code>Gopkg.toml</code> 进行适当的控制。</p><p>对于下面的每一项， 都假设在提出建议的改变之后，你应该运行 <code>dep ensure</code>。如果失败，请教<a href="/posts/2023/4/docs/Dep/docs/references/failure-modes.html#solving-failures" class="">解决故障处理</a>。</p><ul><li>如果 <code>[[constraint]]</code> 错了被推理为你的直接依赖之一，改变它。然后，向 Dep 提交一个问题-而 <code>dep init</code> 可以选择省略约束，错误地转换可以认为是一个 bug。</li><li>如果你的传递依赖项位于错误的版本中，则把 <code>[[override]]</code> 定义逼到你需要的版本。 <ul><li>如果你需要的版本是特定的Git提交，那么最好在那个项目的 <code>Gopkg.lock</code>， 手动更改 <code>revision</code> 期望的散列，然后放弃<code>version</code>或<code>branch</code>字段(如果有的话)。</li></ul></li><li>如果你的一个直接依赖是错误的版本， 并且 <code>Gopkg.toml</code> 已没有 <code>[[constraint]]</code> 关于它， 那，定义一个合适的。 <ul><li>与传递依赖关系一样，如果需要的版本是特定的Git提交，则最好对 <code>Gopkg.lock</code> 手动操作。</li></ul></li></ul><p>希望这些信息足以帮助你通过项目迁移到 dep。如果没有，请随时提交问题，或者加入 我们 <a href="https://gophers.slack.com/messages/C0M5YP9LN" target="_blank" rel="noopener noreferrer">#vendor on the Gopher&#39;s slack</a> 寻求帮助!</p><!--]--><!--[--><!--]--></div><footer class="page-meta"><!----><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><!----></footer><!----><!--[--><!--]--><!----></main><!--]--></div><div class="search-page" role="search"><span class="search-close"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 448 512" width="28" height="28" fill="currentColor"><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"></path></svg></span><div class="gungnir-search-box"><input placeholder="$ grep ..." autocomplete="off" spellcheck="false" value><!----></div></div><div class="menu-btn-container"><div class="menu-btn-wrapper"><div class="menu-btn"><div style="" class="menu-btn-icon"><span></span><span></span><span></span></div><div style="display:none;" class="menu-text">0</div><svg class="menu-progress"><circle class="menu-border" cx="50%" cy="50%" r="48%" style="stroke-dasharray:0% 314.15926%;"></circle></svg></div><div class="menu-btn-child-wrapper"><div class="toggle-dark-button menu-btn-child" title="toggle dark mode"><svg class="ov-icon" style="font-size:1.2em;display:none;" aria-hidden="true" width="19.2" height="19.2" viewbox="-43.52 -43.52 599.04 599.04" fill="currentColor"><path d="M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"/></svg><svg class="ov-icon" style="font-size:1.2em;display:none;" aria-hidden="true" width="19.2" height="19.2" viewbox="-43.52 -43.52 599.04 599.04" fill="currentColor"><path d="M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 00283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"/></svg><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="-43.52 -43.52 599.04 599.04" fill="currentColor"><path d="M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z"/></svg></div><div class="menu-btn-child"><svg class="ov-icon" style="font-size:1.7999999999999998em;" aria-hidden="true" width="28.799999999999997" height="28.799999999999997" viewbox="-75.52 -43.52 599.04 599.04" fill="currentColor"><path d="M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/></svg></div><div class="menu-btn-child"><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="-75.52 -43.52 599.04 599.04" fill="currentColor"><path d="M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"/></svg></div><!----><div class="toggle-sidebar-button menu-btn-child menu-btn-sidebar" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><svg class="ov-icon" style="font-size:1.2em;" aria-hidden="true" width="19.2" height="19.2" viewbox="-1.6 -1.6 19.2 19.2" fill="currentColor"><path d="M14 2a1 1 0 011 1v10a1 1 0 01-1 1H2a1 1 0 01-1-1V3a1 1 0 011-1h12zM2 1a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V3a2 2 0 00-2-2H2z"/><path d="M3 4a1 1 0 011-1h2a1 1 0 011 1v8a1 1 0 01-1 1H4a1 1 0 01-1-1V4z"/></svg></div></div></div></div><!----></div><!--]--></div>
    <script type="module" src="/assets/app.80e5dc69.js" defer></script>
  </body>
</html>
